//--- Added By S.Sugita 
//--- My Original class for "PVParameterised"
//---

#include "G4VPVParameterisation.hh"
#include "globals.hh"
#include "G4ThreeVector.hh"

class G4VPhysicalVolume;
class G4LogicalVolume;
class G4VTouchable;
class G4Material;
class G4VSolid;
class G4Tubs;
class G4Box;

/*
class MyDeviceParameterisation: public G4VPVParameterisation
{
public:  
  MyDeviceParameterisation( G4int NofDevices, G4double StartZpos,
			    G4double Spacing, G4double Width,
			    G4double InitLength,G4gouble FinalLength);
  ~MyDeviceParameterisation();

  void ComputeTransformation(const G4int copyNo,G4VPhysicalVolume* physVol) const;
  void ComputeDimensions(G4Box& copyNo,G4VPhysicalVolume* physVol) const;
  
};
*/

class MyDeviceParameterisation : public G4VPVParameterisation
{
public:
  MyDeviceParameterisation( G4int nofdevices,G4double initzpos,G4double spacing);
  virtual  ~MyDeviceParameterisation();
   
   //--- position, rotation
  virtual  void ComputeTransformation(const G4int copyNo, G4VPhysicalVolume* physVol) const;
   //--- size
  /*
  virtual  void ComputeDimensions(G4Box& tracker, const G4int copyNo,const G4VPhysicalVolume* physVol) const;
   //--- shape
   G4VSolid* ComputeSolid(const G4int copyNo, G4VPhysicalVolume* physVol);
   //--- material, sensitivity, visAtt
   G4Material* ComputeMaterial(const G4int copyNo, G4VPhysicalVolume* physVol,const G4VTouchable *parentTouch=0);
  */
   // G4VTouchable should not be used for ordinary parameterization

private:

  G4int NofDevices;
  G4double InitZpos;
  G4double Spacing;

};
